Convert \n to \r\n also when storing CF_UNICODETEXT (UTF-16) in the
authorTor Lillqvist <tml@novell.com>
Sun, 11 Jun 2006 19:45:56 +0000 (19:45 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Sun, 11 Jun 2006 19:45:56 +0000 (19:45 +0000)
2006-06-11  Tor Lillqvist  <tml@novell.com>

* gdk/win32/gdkproperty-win32.c (gdk_property_change): Convert \n
to \r\n also when storing CF_UNICODETEXT (UTF-16) in the
Clipboard. (#344496)

ChangeLog
ChangeLog.pre-2-10
gdk/win32/gdkproperty-win32.c

index c1f14176d037c64c27bcd395ad8b56070098a44b..0534d023554276518acff05a20db6dbdfee401ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-06-11  Tor Lillqvist  <tml@novell.com>
+
+       * gdk/win32/gdkproperty-win32.c (gdk_property_change): Convert \n
+       to \r\n also when storing CF_UNICODETEXT (UTF-16) in the
+       Clipboard. (#344496)
+
 2006-06-10  Matthias Clasen <mclasen@redhat.com>
 
        * gtk/gtkrecentchooserwidget.c 
index c1f14176d037c64c27bcd395ad8b56070098a44b..0534d023554276518acff05a20db6dbdfee401ff 100644 (file)
@@ -1,3 +1,9 @@
+2006-06-11  Tor Lillqvist  <tml@novell.com>
+
+       * gdk/win32/gdkproperty-win32.c (gdk_property_change): Convert \n
+       to \r\n also when storing CF_UNICODETEXT (UTF-16) in the
+       Clipboard. (#344496)
+
 2006-06-10  Matthias Clasen <mclasen@redhat.com>
 
        * gtk/gtkrecentchooserwidget.c 
index 9d7dc12f76384bdc4b64b9fa24c454080ade0420..af9277fe01186fed535cc7a5de89343898545e7d 100644 (file)
@@ -336,6 +336,9 @@ gdk_property_change (GdkWindow    *window,
 
              wclen++;          /* Terminating 0 */
              size = wclen * 2;
+             for (i = 0; i < wclen; i++)
+               if (wcptr[i] == '\n')
+                 size += 2;
              GDK_NOTE (DND, g_print ("... as Unicode\n"));
            }
          else if (find_common_locale (data, nelements, nchars, &lcid, &buf, &size))
@@ -427,9 +430,17 @@ gdk_property_change (GdkWindow    *window,
              break;
 
            case UNICODE_TEXT:
-             cf = CF_UNICODETEXT;
-             memmove (ucptr, wcptr, size);
-             g_free (wcptr);
+             {
+               wchar_t *p = (wchar_t *) ucptr;
+               cf = CF_UNICODETEXT;
+               for (i = 0; i < wclen; i++)
+                 {
+                   if (wcptr[i] == '\n')
+                     *p++ = '\r';
+                   *p++ = wcptr[i];
+                 }
+               g_free (wcptr);
+             }
              break;
 
            case SINGLE_LOCALE: